package ModeloLogicoSistema;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import manejoDB.AdministradorDBServicio;

/**
 *
 * @author Veko
 */
public class AdministradorServicio {

    private AdministradorDBServicio consultadorDB;
    private List<Servicio> serviciosOfrecidos;

    
    
    public AdministradorServicio() throws SQLException {
        this.consultadorDB = new AdministradorDBServicio();
        this.serviciosOfrecidos = new ArrayList<>();
        this.consultadorDB.Conectar();

    }

    public void persistirServicio(String nombre, Double precio,
            boolean tercerizado, Double precioProveedor, String tipo) throws SQLException {

        this.consultadorDB.setNuevoServicio(nombre, precio, tercerizado, precioProveedor,tipo);
    }

    public Integer nuevoCodigoServicio() throws SQLException {
        return this.consultadorDB.getNuevoCodigoServicio();
    }

    public Servicio cargarServicio(Integer codServicio) {
        try {
            Servicio servicio = new Servicio(codServicio);
            servicio.setNombre(this.consultadorDB.getNombreServicio(codServicio));
            servicio.setPrecio(this.consultadorDB.getPrecioServicio(codServicio));
            servicio.setTipoLavado(this.consultadorDB.getTipo(codServicio));
            servicio.setEsTercerizado(this.consultadorDB.getEsTercerizado(codServicio));
            servicio.setPrecioProveedor(this.consultadorDB.getPrecioProveedor(codServicio));
            return servicio;
        } catch (Exception e) {
            return null;
        }

    }

    public ArrayList<Servicio> cargarListaServicios(ArrayList<Integer> codigosServicios) throws SQLException {

        List<Servicio> serviciosParaMostrar = new ArrayList<>();
        ListIterator it = codigosServicios.listIterator();
        while (it.hasNext()) {
            Servicio servicio = cargarServicio((Integer) it.next());
            serviciosParaMostrar.add(servicio);
        }
        return (ArrayList<Servicio>) serviciosParaMostrar;

    }

    private void cargarListaServiciosOfrecidos() throws SQLException {

        ArrayList<Integer> codigosServicios = new ArrayList<Integer>();

        codigosServicios = (ArrayList<Integer>) consultadorDB.getCodServicios();

        this.serviciosOfrecidos = cargarListaServicios(codigosServicios);
    }

    public ArrayList<Servicio> getListaservicios() throws SQLException {

        cargarListaServiciosOfrecidos();
        return (ArrayList<Servicio>) this.serviciosOfrecidos;
    }

    public void modificarServicio(Integer codServicio, String nombre, Double precio, String tipo, boolean esTercerizado, Double precioT) throws SQLException {
        
        this.consultadorDB.setModificaciones(codServicio, nombre,precio, tipo, esTercerizado,  precioT);
    }

    public void eliminarServicio(Integer codServicio) throws SQLException {
            this.consultadorDB.setEstadoEliminado(codServicio);
        
    }

    public boolean nombreDeServicioTomado(String nombre,Integer id) throws SQLException {
        return this.consultadorDB.consultarNombreTomado(nombre,id);
    }
}
